#include <stdio.h>

int main()
{
    //数组名是一个常量 不允许赋值
    //数组名是数组首元素地址
    int arr[] = {123456, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int *p = arr;
    // printf("%p\n", p);
    // printf("%p\n", arr);
    // printf("%p\n", arr[1]);
    *p = 123;
    // p++;
    // printf("%p\n", arr);
    // printf("%p\n", p);
    // printf("%d\n", *p);

    for (int i = 0; i < 10; i++)
    {
        // printf("%d\n", *(arr + i));
        // printf("%d\n", p[i]);
        // printf("%d\n", *(p + i));
        //先算*p结束完输出在p++
        printf("%d\n", *p++);
    }

    //两个指针相减  等到的结果是两个指针的偏移量  （步长）
    //所有的指针类型 相减结果都是int类型

    // 相当于 sizeof(int) 40 / sizeof(int)
    int step = p - arr;
    printf("%d\n", step);
    //p是变量  arr是常量
    //p是一个指针 4个字节大小
    //arr是一个数组 40字节大小
    // printf("指针类型大小：%p\n", p);
    printf("指针类型大小：%d\n", sizeof(p));
    printf("数组大小：%d\n", sizeof(arr));
    // printf("数组大小：%p\n", arr);
    return 0;
}